"""
Django 文件处理
"""

from dataclasses import dataclass

from django.core.files.temp import TemporaryFile  # noqa
from django.core.files.uploadedfile import (
    InMemoryUploadedFile,
    SimpleUploadedFile,
    TemporaryUploadedFile,
)

from my_typing import *


@dataclass
class DjangoFile:
    """ Django 文件 """

    file: BytesIO | TemporaryFile
    """ 文件 """

    name: str
    """ 文件名 """

    size: int
    """ 文件大小（Bit 字节） """

    content_type: str
    """ 文件类型 """

    suffix: str
    """ 文件后缀 """


def parse_django_file(file: TemporaryUploadedFile | InMemoryUploadedFile | SimpleUploadedFile) -> DjangoFile:
    """
    解析 Django 上传的文件

    Args:
        file: 文件

    Returns:
        DjangoFile
    """

    file_name: str = file.name
    suffix: str = ""

    if "." in file_name:
        suffix = file_name.split(".")[-1]

    return DjangoFile(
        file=file.file,
        name=file_name,
        size=int(file.size),
        content_type=file.content_type,
        suffix=suffix,
    )
